package week4.ww;

/**
 * Een standaard-controleur die test of het wachtwoord geen spatie bevat en minimaal 6 tekens lang is
 * Practicumopgave Programmeren 1
 * @author Rick Clement en Adriaan Dekker
 * @version $Revision: 1.3 $
 */
public class RandomControleur implements Controleur {
    // ------------------ Instantievariabelen ----------------

	private Controleur controleur;
	
    // ------------------ Contructor ----------------
	
	public RandomControleur(Controleur controleur) {
		this.controleur = controleur;
	}
	
	// ------------------ Aanvragen --------------------------

    /**
     * Levert een acceptabel wachtwoord voor deze <code>Controleur</code> op.
     * @return 
     */
	public String genereerWachtwoord() {
		String wachtwoord = "";
		if (Math.random() < 0.1) {
			while (!acceptabel(wachtwoord)) {
				wachtwoord = Random.randomString();
			}
		} else {
			int maxWwLenght = (int)(Math.random() * 44) + 6;
			for (int i = 0; i < maxWwLenght; i++) {
				wachtwoord += (char)(33 + (93 * Math.random()));
			}
			wachtwoord += (char)('0' + (10 * Math.random()));
		}
		return wachtwoord;
	}

    // ------------------ Commando's --------------------------

    /**
     * Controleerd of het wachtwoord minimaal 6 tekens lang is en geen spatie bevat
     * @param wachtwoord het te testen wachtwoord
     * @return of het wachtwoord acceptabel is
     */
	public boolean acceptabel(String wachtwoord) {
		return controleur.acceptabel(wachtwoord);
	}
}
